; 判断文件是否相同(GUI)
; 最后更新(2024.07.29)

#Requires AutoHotkey v2.0
#Include tool\FileComparison.ahk
#Include tool\FileTool.ahk

; 创建一个新的 GUI 窗口，窗口名为 "文件比较"
cWindow := Gui(, "文件比较")

; 添加一个菜单条
cWindow.MenuBar := addMenu()

; 添加一个文本域，占据整个窗口，并设置默认文本为 "请将文件拖入窗口"
board := cWindow.Add("Edit", "w600 h400 -Wrap Cred", "请将需要比较的文件拖入窗口...")

; 初始化一个数组，用于存储拖拽的文件路径(需要比较的文件)
filePaths := []

; 绑定拖拽事件处理函数
cWindow.OnEvent("DropFiles", cWindow_DropFiles)

; 拖拽事件处理函数
cWindow_DropFiles(GuiObj, GuiCtrlObj, FileArray, X, Y) {
    global board, filePaths
    board.Value := "比较文件:`n" ; 清空文本域(添加新的提示文本)
    for i, DroppedFile in FileArray {
        filePaths.Push(DroppedFile)
        board.Value .= DroppedFile "`n"
    }

    ; 提示文本
    board.Value .= "`n"
    tip1 := "请耐心等待...`n"
    board.Value .= tip1
    
    ; 比较文件
    for i, DroppedFile in FileArray {

        ; 依次比较文件，假如文件不相同
        if(!FileComparison.compar(FileArray[1], DroppedFile)){
            
            board.Value := StrReplace(board.Value, tip1, "")
            board.Value .= "有不相同的文件[1," . i . "]`n"
            return
        }
    }

    ; 所有文件相同
    board.Value := StrReplace(board.Value, tip1, "")
    board.Value .= "所有文件均相同`n"
}

; 添加菜单
addMenu(){
    
    ; 菜单(条)
    _menu := MenuBar() 

    ; =>文件
    menu_file := Menu()
    _menu.Add("文件", menu_file)
    
    ; ==> 打开
    menu_file.Add("打开", (a, b, c) => MsgBox( "未完成"))

    
    return _menu
}

; 显示窗口
cWindow.Show()

; 如果程序是否被传递了参数
if (A_Args.Length) > 0 { 

    ; 遍历程序参数
    loop A_Args.Length { 
        
	if(A_Args[A_Index] = "-exit"){
	    ExitApp(0)
	}

        ; 如果这个参数是一个存在的文件路径
        if(FileExist(A_Args[A_Index])){
	    msgBox("传入了有效参数")
            continue
        }
    }
    
} 

